package com.hmsm.sys.service;

import java.util.List;

import com.hmsm.sys.bean.LocalDept;
import com.hmsm.sys.bean.LocalRole;
import com.hmsm.sys.bean.LocalUser;

public interface IOrgService<T extends LocalDept> {

	/**
	 * 获取外键引用对象列表
	 * @param objectClass
	 * @param aliasNames 别名列表，逗号分隔
	 * @param objId 主键
	 * @return
	 * @throws Exception 
	 */
	public void loadRefObjectListMap(T deptInfo);

	public T getNew();
	
	public T getById(Integer id);
	
	public T save(T deptInfo) throws Exception;

	public void loadParent(T deptInfo);

	public void loadParent(T deptInfo, int parentDepth);

	public void loadSubDepts(T deptInfo);

	public void loadSubDepts(T deptInfo, String propertyList, int depth);

	/**
	 * 获取根部门，
	 * @param rebuild 是否需要重新构建
	 * @throws Exception 
	 */
	public T getRootDept(boolean rebuild, String funcKey, LocalUser currentUser);
	
	/**
	 * 获取以指定部门作为树根的根部门，
	 * @param rebuild 是否需要重新构建
	 * @throws Exception 
	 */
	public T getRootDept(Integer id, boolean rebuild, String funcKey, LocalUser currentUser);

	public T update(T deptInfo) throws Exception;

	public boolean delete(T deptInfo) throws Exception;

	/**
	 * 获取所有用户
	 * @return
	 */
	public List<LocalUser> getAllUsers();

	/**
	 * 加载部门用户
	 * @param parent
	 */
	public void loadUsers(T deptInfo);

	public String getOrgManageRight();

}
